package cn.gongxi.weibo.common.response;

import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

/**
 * 同一响应结果返回的类
 */

@Setter
@Getter
@AllArgsConstructor  // 全参
@NoArgsConstructor  // 无参
public class JsonResult {

    private Integer status;

    private String message;


    private Object data;

    public JsonResult(StatusCode statusCode) {
        /*this.code = code;
        this.message = message;*/
        this.status = statusCode.getState();
        this.message = statusCode.getMessage();
    }
    public JsonResult(StatusCode statusCode, Object data) {
        this.status = statusCode.getState();
        this.message = statusCode.getMessage();
        this.data = data;
    }

    /*
    封装：以下两个静态方法是针对于操作成功的场景，比如登录成功、注册成功、发布微博成功
    静态方法1：针对没有具体的数据返回的控制器场景；
    静态方法2：针对有具体的数据返回的控制器场景；
     */

    public static JsonResult success(Object data) {
        return new JsonResult(StatusCode.OPERATION_SUCCESS, data);
    }
    public static JsonResult success() {
        return success(null);
    }

    // 针对于操作失败的静态方法  针对全局异常处理器
    public static JsonResult fail(Object data) {
        return new JsonResult(StatusCode.OPERATION_FAILED,data);
    }
}
